package com.example.book.base;

import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

@Mapper
public interface BaseDao<T> {

    /**
     * 根据id查询
     *
     * @param id
     * @return
     */
    T get(@Param("id") String id);

    /**
     * 根据实体多条件查询
     *
     * @param entity
     * @return
     */
    T get(T entity);

    /**
     * 查询集合
     *
     * @param entity
     * @return
     */
    List<T> findList(T entity);

    /**
     * 新增
     *
     * @param entity
     * @return
     */
    void insert(T entity);

    Integer insertBatch(List<T> list);

    /**
     * 修改
     *
     * @param entity
     * @return
     */
    Integer update(T entity);

    /**
     * 逻辑删除
     *
     * @param id
     * @return
     */
    Integer logicalDeletion(String id);

    /**
     * 实际删除
     *
     * @param id
     * @return
     */
    Integer actualDeletion(String id);


    /**
     * 批量删除
     */
    Integer delete(@Param("ids") String[] ids);

}
